// 手写 instanceof 方法 优先级 1
// instanceof 运算符用于判断构造函数的 prototype 属性是否出现在对象的原型链中的任何位置。

// 实现步骤：
// 1. 首先获取类型的原型
// 2. 然后获得对象的原型
// 3. 然后一直循环判断对象的原型是否等于类型的原型，直到对象原型为 null，因为原型链最终为 null

function myInstanceof(left, right) {
    let proto = Object.getPrototypeOf(right),// 获取对象原型
        prototype = right.prototype; // 获取构造函数的 prototype 对象
    while (true) {
        if (!proto) return false;
        if (proto === prototype) return true;
        proto = Object.getPrototypeOf(proto);
    }
}

// Demo
function Car(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
}
const auto = new Car('Honda', 'Accord', 1998);

console.log(auto instanceof Car);
// expected output: true

console.log(auto instanceof Object);
// expected output: true
